// Variables para el manejo de hojas var hojaPrincipal = "Hoja 1"; var ss = SpreadsheetApp.getActiveSpreadsheet(); var hoja = ss.getSheetByName(hojaPrincipal); // Variables obtenidas de funciones por return var e_number; // función para manejar las solicitudes HTTP POST entrantes. Cuando se recibe una solicitud POST, llama a la función handleRepose y le pasa el objeto de solicitud e. function doPost(e){ return handleRepose(e) ; } // Código para crear o obtener una hoja llamada '_Logs' function crearHojaLogs() { // se crea una variable para la hoja de errores, elcódigo comprueba si la hoja ya existe, y si no la inserta. var sheet_log = ss.getSheetByName('_Logs'); if (!sheet_log) { ss.insertSheet('_Logs'); sheet_log = ss.getSheetByName('_Logs'); } // Registramos el número de ejecuciones if (sheet_log.getRange('A1').isBlank()) { sheet_log.getRange('A1').setValue(1); // actualiza el recuento de ejecuciones en la celda A1 de la hoja '_Logs'sumandole 1 } else { sheet_log.getRange('A1').setValue(sheet_log.getRange('A1').getValue() + 1); } // Devuelve el número de ejecución y lo almacena en la variable e_number e_number = sheet_log.getRange('A1').getValue(); return e_number; } function handleRepose(e) { crearHojaLogs(); // Llamamos la función que crea la hoja de logs try { // Verificar si la cabecera ya está creada, si no, la creamos if (hoja.getRange('A1').isBlank()) { var h_row = ["cen", "fecha-hora", "nombre", "Humedad Relativa %", "Temperatura ºC"]; hoja.getRange(1, 1, 1, h_row.length).setValues([h_row]); } // Parseamos el JSON recibido var jsonData = JSON.parse(e.postData.contents); // Extraer datos del JSON var deviceId = jsonData.end_device_ids.device_id; // Variables para los valores de temperatura y humedad var temperatura = ''; var humedad = ''; // Buscar temperatura y humedad en la lista de mensajes var messages = jsonData.uplink_message.decoded_payload.messages; if (messages && Array.isArray(messages)) { messages.forEach(msg => { if (msg.measurementId === 4097) { temperatura = msg.measurementValue.toString().replace('.', ','); } if (msg.measurementId === 4098) { humedad = msg.measurementValue.toString().replace('.', ','); } }); } // Crear la fila de datos var row = [e_number, new Date(), deviceId, humedad, temperatura]; // Insertar la fila en la hoja de cálculo hoja.appendRow(row); } catch (err) { // Guardar errores en la hoja de logs var sheet_log = ss.getSheetByName('_Logs'); sheet_log.appendRow([e_number, err.message]); } }